package com.woniu.service.impl;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.woniu.entity.PageData;
import com.woniu.entity.dto.QueryLogDTO;
import com.woniu.mapper.LogMapper;

import com.woniu.pojo.UserLog;
import com.woniu.service.ILogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author xiaos
 * @since 2023-04-11
 */
@Service
public class LogServiceImpl extends ServiceImpl<LogMapper, UserLog> implements ILogService {

    @Autowired
    private LogMapper logMapper;

    @Override
    public PageData search(Integer currentPage, Integer pageSize, QueryLogDTO queryLogDTO) {
        // 1. 构建查询条件
        QueryWrapper<UserLog> wrapper = new QueryWrapper<>();
        if (!StringUtils.isEmpty(queryLogDTO.getUserName())) {
            wrapper.like("user_name",queryLogDTO.getUserName());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getLocation())) {
            wrapper.eq("location", queryLogDTO.getLocation());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getUserIp())) {
            wrapper.eq("userIp", queryLogDTO.getUserIp());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getType())) {
            wrapper.eq("type", queryLogDTO.getType());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getMethod())) {
            wrapper.le("method", queryLogDTO.getMethod());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getStatus())) {
            wrapper.eq("status", queryLogDTO.getStatus());
        }
        if (!StringUtils.isEmpty(queryLogDTO.getCreateTime())) {
            wrapper.ge("create_time", queryLogDTO.getCreateTime());
        }

        // 2. 创建分页对象
        IPage<UserLog> page = new Page<>(currentPage, pageSize);
        // 3. 调用mapper查询数据
        IPage<UserLog> selectPage = logMapper.selectPage(page, wrapper);
        // 4. 封装返回的对象 pageData
        PageData pageData = new PageData(selectPage.getTotal(), selectPage.getRecords());
        // 5. 返回数据
        return pageData;
    }


}
